#pragma once

class DP1 {
   public:
    static void draw_a_line(int x1, int y1, int x2, int y2);
    static void draw_a_circle(int x, int y, int r);
};

class DP2 {
   public:
    static void drawline(int x1, int x2, int y1, int y2);
    static void drawcircle(int x, int y, int r);
};

class Drawing {
   public:
    virtual void drawLine(int x1, int y1, int x2, int y2) = 0;
    virtual void drawCircle(int x, int y, int r) = 0;
};

class V1Drawing : public Drawing {
   public:
    void drawLine(int x1, int y1, int x2, int y2) override;
    void drawCircle(int x, int y, int r) override;
};

class V2Drawing : public Drawing {
   public:
    void drawLine(int x1, int y1, int x2, int y2) override;
    void drawCircle(int x, int y, int r) override;
};